<?php

class Soul_Model_Property_Array extends Soul_Model_Property_Base {

    public function __construct() {
        parent::__construct();
        $this->addData(array(
            'default_value'=>array(),
            'input_type'=>'select',
            'item_type'=>'string',
            'item_count'=>0,
            'separator'=>','
        ));
    }
    
    public function compareValue($source, $value){
    	if(is_array($source) && is_array($value)){
    		return Soul_Util_Array::compareArray($source, $value);
    	}
    	return $source == $value;
    }    

    public function convertToDb($value) {
    	$result = $value;
        if(is_null($result) || empty($result)){
            $result = $this->getDefaultValue();
        }
        if(is_array($result)){
        	Soul_Util_Array::removeEmpty($result);
            $result = implode($this->getSeparator(), $result);
        }
        return $result;
    }

    public function convertFromDb($value){
        if(empty($value)){
            return $this->getDefaultValue();
        }
        return explode($this->getSeparator(), $value);
    }

    public function validate($value) {
        return true;
    }
    
    public function getPropertyType(){
    	return 'array';
    }  
    
    public function getParameterType(){
    	return 's';
    }
}